#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

# Test .mo file with many system dependent string pairs.
# Cf. <inttypes.h> format string directives support as in msgfmt-12, format-c-3,
# and the 'I' format directive flag as in format-c-5.

# This test used to trigger an endless loop in loadmsgcat.c, because
# hash_tab_size was too small and the "open addressing" collision resolution
# leads to an endless loop when the hash table is full.

cat <<\EOF > mf-20.po
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8\n"

msgid "The trees are green."
msgstr "Les arbres sont verts."

#, c-format
msgid "A meter has %d millimeters."
msgstr "Un mètre a %Id millimètres."

#, c-format
msgid "A pig has %d legs."
msgstr "Un cochon a %Id pattes."

#, c-format
msgid "The French revolution took place in %d."
msgstr "La révolution française eut lieu en %Id."

#, c-format
msgid "Abraham died at the age of %d."
msgstr "Abraham mourut à l’âge de %Id ans."

#, c-format
msgid "Everyone has %d fingers at each hand."
msgstr "Chacun a %Id doigts à chaque main."

msgid "Sunshine heats."
msgstr "Le soleil tape."

#, c-format
msgid "Most cars have %d wheels."
msgstr "La plupart des voitures a %Id roues."

#, c-format
msgid "The oldest person is %d years old."
msgstr "La personne la plus vieille a %Id ans."

#, c-format
msgid "Cesar tool %d years to conquer Gaul."
msgstr "César mit %Id ans à conquérir la Gaule."

#, c-format
msgid "There are %d pyramids in Egypt."
msgstr "Il y a %Id pyramides en Égypte."

#, c-format
msgid "The number %d causes bad luck."
msgstr "Le nombre %Id porte malheur."
EOF

test -d fr || mkdir fr
test -d fr/LC_MESSAGES || mkdir fr/LC_MESSAGES

: ${MSGFMT=msgfmt}
${MSGFMT} -o fr/LC_MESSAGES/mf-20.mo mf-20.po || Exit 1

cat <<\EOF > mf-20.ok
Le soleil tape.
EOF

: ${LOCALE_FR=fr_FR}
: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
: ${GETTEXT=gettext}
: ${DIFF=diff}
if test $LOCALE_FR != none; then
  prepare_locale_ fr $LOCALE_FR
  LC_ALL=$LOCALE_FR LANGUAGE= TEXTDOMAINDIR=. TEXTDOMAIN=mf-20 \
  ${GETTEXT} -s 'Sunshine heats.' > mf-20.tmp
  LC_ALL=C tr -d '\r' < mf-20.tmp > mf-20.out
  ${DIFF} mf-20.ok mf-20.out || Exit 1
fi
if test $LOCALE_FR_UTF8 != none; then
  prepare_locale_ fr $LOCALE_FR_UTF8
  LC_ALL=$LOCALE_FR_UTF8 LANGUAGE= TEXTDOMAINDIR=. TEXTDOMAIN=mf-20 \
  ${GETTEXT} -s 'Sunshine heats.' > mf-20.tmp
  LC_ALL=C tr -d '\r' < mf-20.tmp > mf-20.out
  ${DIFF} mf-20.ok mf-20.out || Exit 1
fi
if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then
  if test -f /usr/bin/localedef; then
    echo "Skipping test: no french locale is installed"
  else
    echo "Skipping test: no french locale is supported"
  fi
  Exit 77
fi

Exit 0
